The present invention relates to a system for using a general purpose computer to emulate the operation of a system having a dedicated graphics processor. For instance, there are many brands of video game machines that use various forms of dedicated graphics processors. Content providers (e.g., computer game authors and their employers) write software that is specifically designed to be executed by a particular, customized, computer architecture.
As shown in FIG. 1, video game machines are typically implemented as a special purpose (and often low cost) computer 50 that has a central processing unit (CPU) 52, main memory 54, a graphics processor 55, a video memory subsystem 56, a CD-ROM drive 58, and one or more communication buses 60, 62 for interconnecting those components. The computer 50 typically includes various user input devices, such as a joystick 64, and various output devices, such as a television 66 and one or more audio speakers 68 (which may be incorporated in the television 66, or may be separate from the television). The CPU 52 in many video game machines includes customized, non-standard features not found in typical desktop computers to facilitate the generation of complex, robust games. The main memory 54 may include both high speed random access memory (RAM) as well as read only memory (ROM). The video memory subsystem 56 typically includes a video memory array (VRAM 70) and VRAM logic 72, which provides support for operations such as copying blocks of data from one portion of VRAM to another. The graphics processor 55 and/or the VRAM logic 72 typically support special operations such as filling objects (e.g., triangles and four sided objects) with a fill pattern, drawing objects or portions of objects within a clipping region, handling various three-dimensional graphics functions such as transparency related rendering. The CD-ROM drive 58 receives CD-ROM disks (CD-ROMs) 74, which contain programs and data to be processed by the video game system 50.
The use of specialized hardware, such as the graphics processor 55 shown in FIG. 1, which operates in parallel with the CPU 52, allows content providers to generate complex graphics and games with relatively modest central processor (instruction execution) logic. As a result, when such a system is emulated by a general purpose computer, the computer must execute a much larger number of instructions to emulate all the functions performed by the specialized support logic found in the specialized hardware.
Ideally, the emulation system should operate in a manner that is synchronized with the operation of the system being emulated. In other words, the game or other program when executed by the emulation system should not progress either faster or slower than the same program when executed by the dedicated graphics processing system. More specifically, the emulation system should ideally generate exactly the same video frames at exactly the same rate as the emulated system. However, unless the emulation system is extremely powerful, this ideal performance goal will be unattainable, at least for those video frames that are generated using long and complex (or at least processing intensive) sequences of rendering commands. Some video frames require much more processing than others to render the respective frame images.
Also, some of the computers on which an emulation system is implemented will be less powerful than others. A relatively low power computer executing the emulation system might be able to render, say, only half as many frames per second as the video game system being emulated, while a more powerful computer might be able to keep up with the emulated system for all but the most complex frames.
It is a goal of the present invention to provide an emulation module that can be executed on a variety of general purpose computer systems and that faithfully emulates a target video game system to best of the ability of the computer system on which it is being executed. In other words, it is goal of the present invention to provide an emulation module that, without having any special information about the computer system on which it is operating, automatically adapts itself so as to emulate the execution of any particular program (e.g., video game program) as faithfully as possible. The emulation module should generate video frames that are the same, or very close to the same as those generated by the target system, and should do so in manner that is closely synchronized with the target system.
Another goal of the present invention is to provide a graphics processor emulator, or emulation module, that adaptively skips video frames (i.e., avoids rendering skipped video frames) so as to keep the emulation system synchronized with the target system, while taking measures to minimize errors in rendered frames caused by the skipping of other frames.